import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:interview/servers/login.dart';
import 'package:interview/utils/logger.dart';

class UserController extends GetxController {
  // 使用 GetStorage 进行持久化存储
  final GetStorage box = GetStorage("user_box");
  final Rx<User?> _user = Rx<User?>(null);

  @override
  void onInit() {
    super.onInit();
    loadUser();
  }

  // 保存用户信息
  Future<void> saveUser(User user) async {
    _user.value = user;
    await box.write('user', user.toJson());
  }

  // 加载用户信息
  Future<void> loadUser() async {
    try {
      final data = box.read('user');
      if (data != null) {
        _user.value = User.fromJson(data);
        
      }
    } catch (e) {
      Logger.error("loadUser失败$e" , tag:"loadUser");
    }
  }

  // 获取用户信息
  User? getUser() {
    return _user.value;
  }

// 获取用户token
  String getToken() {
    if (_user.value != null) {
      return _user.value!.token;
    } else {
      Logger.error("Token 未找到", tag: "getToken");
      return ''; // 如果没有用户信息，则返回空字符串
    }
  }

  // 检查是否已登录（是否有 token）
  bool get isLoggedIn {
    return _user.value?.token.isNotEmpty ?? false;
  }

  Future<void> setTestToken() async {
    if (_user.value != null) {
      final updatedUser = User(
        id: _user.value!.id,
        username: _user.value!.username,
        avatar: _user.value!.avatar,
        token: 'abc',
        totalTime: _user.value!.totalTime,
        clockinNumbers: _user.value!.clockinNumbers,
        nickName: _user.value!.nickName,
      );
      _user.value = updatedUser;
      await saveUser(updatedUser);
    } else {
      Logger.error("无法设置测试 Token，用户信息为空", tag: "setTestToken");
    }
  }

  void clearUser() {
    _user.value = null;
    box.remove('user');
  }
}
